package projeto.comercial.cliente.cih.dropdown;

import java.util.ArrayList;
import java.util.List;

import org.zkoss.zkplus.spring.SpringUtil;
import org.zkoss.zul.Listheader;
import org.zkoss.zul.ListitemRenderer;

import plataforma.base.cdp.ObjetoPagina;
import plataforma.base.cdp.ResultadoPaginado;
import plataforma.base.cih.ListagemPaginada;
import plataforma.base.cih.NucleoListHeader;
import plataforma.cih.campos.CampoDropDownAvancado;
import plataforma.cih.campos.PainelFiltroBandBox;
import projeto.comercial.cliente.cdp.Cliente;
import projeto.comercial.cliente.cgt.ServiceCliente;


public class DropDownCliente extends CampoDropDownAvancado<Cliente> {

	
	/**
	 * Determina se o Campo eh obrigatorio
	 * */
	public DropDownCliente(boolean isObrigatorio) {
		super(true,isObrigatorio);

	}

	@Override
	public PainelFiltroBandBox definirPainelFiltroBandBox() {
		return new PainelFIltroDropDownCliente();

	}

	@Override
	public ListagemPaginada<Cliente> definirListagemPaginada() {
		return new ListagemClienteSimples();
	}

	@Override
	public String getTextoCampo(Cliente objeto) {

		return objeto.getNome();
	}

	@Override
	public ResultadoPaginado<Cliente> obterResultadoPaginado(
			ObjetoPagina pagina) {
		ServiceCliente service = SpringUtil.getApplicationContext().getBean(
				ServiceCliente.class);
		return service.recuperarTodosPaginado(pagina);
	}

	public class ListagemClienteSimples extends ListagemPaginada<Cliente> {

		@Override
		public List<NucleoListHeader> definirColunasTabela() {

			List<NucleoListHeader> colunas = new ArrayList<NucleoListHeader>();			
			colunas.add(new NucleoListHeader("Nome", "nome", "100%"));
			return colunas;
		}

		protected void ativarOrdenacaoListHeader(Listheader listheader) {

		}

		@Override
		public ListitemRenderer definirItemRender() {
					
				return null;
		
		
		}

		@Override
		protected String[] recuperarDadosObjeto(Cliente objeto) {
			//Coloquei um texto inativado apenas para melhorar a legibilidade desses casos.O ideal era destacar mais
			String complemento = objeto.isAtivo() ? "" : " ( Inativado )";
			return new String[] { objeto.getNome()+complemento };
		}

	}

	@Override
	public void atualizarListagem(ObjetoPagina pagina) {
		acaoPesquisar();

	}

}
